Opi hallitsemaan, tallentamaan ja analysoimaan aikasarjadataa tehokkaasti Pythonin ja InfluxDB:n avulla. Tämä opas kattaa asennuksen, datan kirjoituksen ja parhaat käytännöt.
Aikasarjadatan hallinta: Kattava opas Pythonin ja InfluxDB:n integraatioon
Nykypäivän datavetoisessa maailmassa tietyntyyppinen data on tulossa yhä tärkeämmäksi lukuisilla toimialoilla: aikasarjadata. Olipa kyseessä palvelinmetriikoiden seuranta DevOps-putkessa, anturilukemien jäljitys IoT-verkossa tai osakekurssien analysointi rahoitusmarkkinoilla, aikaleimaan liitettyjä datapisteitä on kaikkialla. Tämän datan tehokas käsittely asettaa kuitenkin ainutlaatuisia haasteita, joita perinteiset relaatiotietokannat eivät ole suunniteltu ratkaisemaan.
Tässä erikoistuneet aikasarjatietokannat (TSDB) astuvat kuvaan. Yksi alan johtajista on InfluxDB, korkean suorituskyvyn avoimen lähdekoodin tietokanta, joka on suunniteltu erityisesti aikaleimatun datan käsittelyyn. Yhdistettynä Pythonin monipuolisuuteen ja tehokkaaseen datatiede-ekosysteemiin se luo uskomattoman vankan pohjan skaalautuvien ja oivaltavien aikasarjasovellusten rakentamiseen.
Tämä kattava opas käy läpi kaiken, mitä sinun tarvitsee tietää Pythonin ja InfluxDB:n integroimiseksi. Käsittelemme peruskäsitteitä, ympäristön asennusta, datan kirjoittamista ja kyselyä, käytännön esimerkkiä sekä olennaisia parhaita käytäntöjä tuotantovalmiiden järjestelmien rakentamiseen. Olitpa sitten datainsinööri, DevOps-ammattilainen tai datatieteilijä, tämä artikkeli antaa sinulle taidot hallita aikasarjadataasi.
Ydinkäsitteiden ymmärtäminen
Ennen kuin sukellamme koodin kirjoittamiseen, on tärkeää ymmärtää InfluxDB:n peruskäsitteet. Tämä auttaa sinua suunnittelemaan tehokkaan dataskeemasi ja kirjoittamaan tehokkaita kyselyitä.
Mikä on InfluxDB?
InfluxDB on tietokanta, joka on optimoitu aikasarjadatan nopeaan ja korkean saatavuuden tallennukseen ja hakuun. Toisin kuin yleiskäyttöiset tietokannat, kuten PostgreSQL tai MySQL, InfluxDB:n sisäinen arkkitehtuuri on suunniteltu alusta alkaen käsittelemään aikasarjatyökuormien erityispiirteitä – nimittäin suuria kirjoitusmääriä ja aikakeskeisiä kyselyitä.
Se on saatavilla kahtena pääversiona:
- InfluxDB OSS: Avoimen lähdekoodin versio, jota voit isännöidä omassa infrastruktuurissasi.
- InfluxDB Cloud: Täysin hallittu, monipilvinen tietokantapalvelu (DBaaS).
Tässä oppaassa keskitymme molempiin soveltuviin käsitteisiin ja käytämme esimerkeissämme paikallista OSS-instanssia.
InfluxDB:n keskeinen terminologia
InfluxDB:llä on oma datamallinsa ja terminologiansa. Näiden termien ymmärtäminen on ensimmäinen askel sen tehokkaaseen käyttöön.
- Datapiste (Data Point): Datan perusyksikkö InfluxDB:ssä. Yksi datapiste koostuu neljästä osasta:
- Mittaus (Measurement): Merkkijono, joka toimii datasi säilönä, vastaavasti kuin taulun nimi SQL:ssä. Esimerkiksi
cpu_usagetaitemperature_readings. - Tunnistejoukko (Tag Set): Avain-arvo-parien (molemmat merkkijonoja) kokoelma, joka tallentaa metadataa datasta. Tunnisteet indeksoidaan, mikä tekee niistä ihanteellisia suodattamiseen ja ryhmittelyyn kyselyissä. Esimerkkejä:
host=server_A,region=us-east-1,sensor_id=T-1000. - Kenttäjoukko (Field Set): Avain-arvo-parien kokoelma, joka edustaa varsinaisia data-arvoja. Kenttien arvot voivat olla kokonaislukuja, liukulukuja, boolean-arvoja tai merkkijonoja. Kenttiä ei indeksoida, joten niiden käyttö kyselyn `WHERE`-lausekkeissa ei ole tehokasta. Esimerkkejä:
value=98.6,load=0.75,is_critical=false. - Aikaleima (Timestamp): Datapisteeseen liittyvä aikaleima nanosekunnin tarkkuudella. Tämä on kaiken datan keskeinen järjestelyperiaate InfluxDB:ssä.
- Mittaus (Measurement): Merkkijono, joka toimii datasi säilönä, vastaavasti kuin taulun nimi SQL:ssä. Esimerkiksi
- Säilö (Bucket): Nimetty sijainti, johon data tallennetaan. Se vastaa 'tietokantaa' perinteisessä relaatiotietokannassa. Säilöllä on säilytyskäytäntö, joka määrittää, kuinka kauan dataa säilytetään.
- Organisaatio (Org): Työtila käyttäjäryhmälle. Kaikki resurssit, kuten säilöt, dashboardit ja tehtävät, kuuluvat organisaatioon.
Ajattele sitä näin: jos kirjaisit lämpötiladataa, mittauksesi voisi olla `ymparistosensorit`. Tunnisteet voisivat olla `sijainti=labra_1` ja `anturityyppi=DHT22` kuvaamaan, missä ja mikä datan tuotti. Kentät olisivat varsinaiset lukemat, kuten `lampotila=22.5` ja `kosteus=45.1`. Ja tietysti jokaisella lukemalla olisi yksilöllinen aikaleima.
Ympäristön asentaminen
Nyt laitetaan kädet saveen ja asennetaan tarvittavat työkalut. Käytämme Dockeria nopeaan ja maailmanlaajuisesti yhtenäiseen InfluxDB-asennukseen.
InfluxDB:n asentaminen Dockerilla
Docker tarjoaa puhtaan, eristetyn ympäristön palveluiden ajamiseen. Jos sinulla ei ole Dockeria asennettuna, tutustu käyttöjärjestelmäsi viralliseen dokumentaatioon.
Käynnistääksesi InfluxDB 2.x -kontin, avaa pääte ja suorita seuraava komento:
docker run --name influxdb -p 8086:8086 influxdb:latest
Tämä komento lataa uusimman InfluxDB-imagen, käynnistää `influxdb`-nimisen kontin ja yhdistää portin 8086 paikallisella koneellasi kontin sisäiseen porttiin 8086. Tämä on InfluxDB API:n oletusportti.
InfluxDB:n alkuasetukset
Kun kontti on käynnissä, voit käyttää InfluxDB:n käyttöliittymää siirtymällä selaimessasi osoitteeseen http://localhost:8086.
- Sinut tervehditään "Welcome to InfluxDB" -asennusnäytöllä. Napsauta "Get Started".
- Käyttäjän luonti: Sinua pyydetään luomaan ensimmäinen käyttäjä. Täytä käyttäjänimi ja salasana.
- Ensimmäinen organisaatio ja säilö: Anna nimi ensisijaiselle organisaatiollesi (esim. `my-org`) ja ensimmäiselle säilöllesi (esim. `my-bucket`).
- Tallenna tokenisi: Asennuksen jälkeen InfluxDB näyttää alkuperäisen admin-tokenisi. Tämä on erittäin tärkeää! Kopioi tämä token ja tallenna se turvalliseen paikkaan. Tarvitset sitä vuorovaikutuksessa tietokannan kanssa Python-skriptistäsi.
Asennuksen jälkeen sinut ohjataan InfluxDB:n pää-dashboardiin. Olet nyt valmis yhdistämään siihen Pythonista.
Python-asiakaskirjaston asentaminen
Virallinen Python-asiakaskirjasto InfluxDB 2.x:lle ja Cloudille on `influxdb-client`. Asenna se pip-työkalulla:
pip install influxdb-client
Tämä kirjasto tarjoaa kaikki tarvittavat työkalut InfluxDB-instanssisi kirjoittamiseen, kyselemiseen ja hallintaan ohjelmallisesti.
Datan kirjoittaminen Pythonilla
Kun ympäristömme on valmis, tutkitaan eri tapoja kirjoittaa dataa InfluxDB:hen Pythonin avulla. Datan tehokas kirjoittaminen on kriittistä suorituskyvyn kannalta, erityisesti korkean läpimenon sovelluksissa.
Yhteyden muodostaminen InfluxDB:hen
Ensimmäinen askel missä tahansa skriptissä on yhteyden muodostaminen. Tarvitset URL-osoitteen, organisaatiosi nimen ja aiemmin tallentamasi tokenin.
Paras käytäntö on tallentaa arkaluonteiset tiedot, kuten tokenit, ympäristömuuttujiin sen sijaan, että ne kovakoodattaisiin skriptiin. Tässä esimerkissä määrittelemme ne kuitenkin muuttujina selkeyden vuoksi.
import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS
# --- Yhteystiedot ---
url = "http://localhost:8086"
token = "YOUR_SUPER_SECRET_TOKEN" # Korvaa omalla tokenillasi
org = "my-org"
bucket = "my-bucket"
# --- Asiakasolion luonti ---
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
# --- Kirjoitus-API:n hankkiminen ---
# SYNCHRONOUS-tila kirjoittaa datan välittömästi. Korkean läpimenon sovelluksissa harkitse ASYNCHRONOUS-tilaa.
write_api = client.write_api(write_options=SYNCHRONOUS)
print("Yhteys InfluxDB:hen muodostettu onnistuneesti!")
Yksittäisen datapisteen rakentaminen ja kirjoittaminen
Asiakaskirjasto tarjoaa `Point`-olion, joka on kätevä tapa rakentaa data InfluxDB:n datamallin mukaisesti.
Kirjoitetaan yksittäinen datapiste, joka edustaa palvelimen suorittimen kuormitusta.
from influxdb_client import Point
import time
# Luo datapiste sujuvalla API:lla
point = (
Point("system_metrics")
.tag("host", "server-alpha")
.tag("region", "eu-central-1")
.field("cpu_load_percent", 12.34)
.field("memory_usage_mb", 567.89)
.time(int(time.time_ns())) # Käytä nanosekunnin tarkkuuden aikaleimaa
)
# Kirjoita piste säilöön
write_api.write(bucket=bucket, org=org, record=point)
print(f"Kirjoitettiin yksittäinen piste säilöön '{bucket}'.")
Tässä esimerkissä `system_metrics` on mittaus, `host` ja `region` ovat tunnisteita, ja `cpu_load_percent` sekä `memory_usage_mb` ovat kenttiä. Käytämme `time.time_ns()` saadaksemme nykyisen aikaleiman nanosekunnin tarkkuudella, mikä on InfluxDB:n natiivitarkkuus.
Eräkirjoitus suorituskyvyn parantamiseksi
Datapisteiden kirjoittaminen yksitellen on tehotonta ja luo tarpeetonta verkkokuormaa. Missä tahansa todellisessa sovelluksessa sinun tulisi kirjoittaa datasi erissä. `write_api` voi hyväksyä listan `Point`-olioita.
Simuloidaan useiden anturilukemien keräämistä ja niiden kirjoittamista yhtenä eränä.
points = []
# Simuloi 5 lukemaa kahdelta eri anturilta
for i in range(5):
# Anturi 1
point1 = (
Point("environment")
.tag("sensor_id", "A001")
.tag("location", "greenhouse-1")
.field("temperature", 25.1 + i * 0.1)
.field("humidity", 60.5 + i * 0.2)
.time(int(time.time_ns()) - i * 10**9) # Porrasta aikaleimoja 1 sekunnilla
)
points.append(point1)
# Anturi 2
point2 = (
Point("environment")
.tag("sensor_id", "B002")
.tag("location", "greenhouse-2")
.field("temperature", 22.8 + i * 0.15)
.field("humidity", 55.2 - i * 0.1)
.time(int(time.time_ns()) - i * 10**9)
)
points.append(point2)
# Kirjoita koko erä pisteitä
write_api.write(bucket=bucket, org=org, record=points)
print(f"Kirjoitettiin erä, jossa {len(points)} pistettä, säilöön '{bucket}'.")
Tämä lähestymistapa parantaa merkittävästi kirjoitustehoa vähentämällä InfluxDB API:lle tehtyjen HTTP-pyyntöjen määrää.
Datan kirjoittaminen Pandas DataFrameista
Datatieteilijöille ja analyytikoille Pandas on valintatyökalu. `influxdb-client`-kirjastolla on ensiluokkainen tuki datan kirjoittamiseen suoraan Pandas DataFramesta, mikä on uskomattoman tehokasta.
Asiakaskirjasto voi automaattisesti yhdistää DataFramen sarakkeet mittauksiin, tunnisteisiin, kenttiin ja aikaleimoihin.
import pandas as pd
import numpy as np
# Luo esimerkkikehys
now = pd.Timestamp.now(tz='UTC')
dates = pd.to_datetime([now - pd.Timedelta(minutes=i) for i in range(10)])
data = {
'price': np.random.uniform(100, 110, 10),
'volume': np.random.randint(1000, 5000, 10),
'symbol': 'XYZ',
'exchange': 'GLOBALEX'
}
df = pd.DataFrame(data=data, index=dates)
# DataFramen on oltava aikavyöhyketietoinen DatetimeIndex
print("Esimerkki DataFrame:")
print(df)
# Kirjoita DataFrame InfluxDB:hen
# data_frame_measurement_name: Käytettävä mittauksen nimi
# data_frame_tag_columns: Tunnisteina käsiteltävät sarakkeet
write_api.write(
bucket=bucket,
record=df,
data_frame_measurement_name='stock_prices',
data_frame_tag_columns=['symbol', 'exchange']
)
print(f"\nKirjoitettiin DataFrame mittaukseen 'stock_prices' säilössä '{bucket}'.")
# Muista sulkea asiakas
client.close()
Tässä esimerkissä DataFramen indeksiä käytetään automaattisesti aikaleimana. Määritämme, että `symbol`- ja `exchange`-sarakkeiden tulee olla tunnisteita, ja jäljelle jäävistä numeerisista sarakkeista (`price` ja `volume`) tulee kenttiä.
Datan kysely Pythonilla ja Fluxilla
Datan tallentaminen on vain puoli voittoa. Todellinen voima tulee sen kyselemisestä ja analysoimisesta. InfluxDB 2.x käyttää tehokasta dataskriptauskieltä nimeltä Flux.
Johdanto Fluxiin
Flux on funktionaalinen kieli, joka on suunniteltu aikasarjadatan kyselyyn, analysointiin ja käsittelyyn. Se käyttää putkioperaattoria (`|>`) funktioiden ketjuttamiseen, luoden datankäsittelyputken, joka on sekä luettava että ilmaisuvoimainen.
Yksinkertainen Flux-kysely näyttää tältä:
from(bucket: "my-bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "system_metrics")
|> filter(fn: (r) => r.host == "server-alpha")
Tämä kysely valitsee dataa `my-bucket`-säilöstä, suodattaa sen viimeiseen tuntiin ja suodattaa sen edelleen tietyn mittauksen ja host-tunnisteen perusteella.
Ensimmäinen Flux-kyselysi Pythonissa
Datan kyselemiseksi sinun on hankittava `QueryAPI`-olio asiakkaaltasi.
# --- Muodosta yhteys uudelleen kyselyä varten ---
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
query_api = client.query_api()
# --- Määritä Flux-kysely ---
flux_query = f'''
from(bucket: "{bucket}")
|> range(start: -10m)
|> filter(fn: (r) => r._measurement == "environment")
'''
# --- Suorita kysely ---
result_tables = query_api.query(query=flux_query, org=org)
print("Kysely suoritettu. Käsitellään tuloksia...")
Kyselytulosten käsittely
Flux-kyselyn tulos on taulukkovirta. Jokainen taulukko edustaa ainutlaatuista datapisteryhmää (ryhmitelty mittauksen, tunnisteiden jne. mukaan). Voit iteroida näiden taulukoiden ja niiden tietueiden läpi.
# Iteroi taulukoiden läpi
for table in result_tables:
print(f"--- Taulukko (sarja tunnisteille: {table.records[0].values}) ---")
# Iteroi tietueiden läpi kussakin taulukossa
for record in table.records:
print(f"Aika: {record.get_time()}, Kenttä: {record.get_field()}, Arvo: {record.get_value()}")
print("\nKyselytulosten käsittely valmis.")
Tämä raaka käsittely on hyödyllinen mukautetulle logiikalle, mutta data-analyysiä varten on usein kätevämpää saada data suoraan tuttuun rakenteeseen.
Edistynyt kysely: Aggregointi ja muunnos
Flux todella loistaa, kun suoritat aggregaatioita. Etsitään keskimääräinen lämpötila joka 2. minuutti aiemmin kirjoitetulle `environment`-datalle.
flux_aggregate_query = f'''
from(bucket: "{bucket}")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "environment")
|> filter(fn: (r) => r._field == "temperature")
|> window(every: 2m)
|> mean()
|> yield(name: "mean_temperature")
'''
# Suorita ja käsittele
aggregated_results = query_api.query(query=flux_aggregate_query, org=org)
print("\n--- Aggregoidut tulokset (Keskilämpötila per 2 min) ---")
for table in aggregated_results:
for record in table.records:
print(f"Aikaikkunan loppu: {record.get_time()}, Keskilämpötila: {record.get_value():.2f}")
Tässä `window(every: 2m)` ryhmittelee datan 2 minuutin väleihin, ja `mean()` laskee kunkin ikkunan keskiarvon.
Kysely suoraan Pandas DataFrameen
Saumattomin tapa integroida InfluxDB Pythonin datatiedepakettiin on kysellä suoraan Pandas DataFrameen. `query_api`:lla on tähän omistettu metodi: `query_data_frame()`.
# --- Kysele osakekurssit DataFrameen ---
flux_df_query = f'''
from(bucket: "{bucket}")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "stock_prices")
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
'''
# Suorita kysely
df_result = query_api.query_data_frame(query=flux_df_query, org=org)
# Tuloksessa voi olla ylimääräisiä sarakkeita, siistitään se
if not df_result.empty:
df_result = df_result[['_time', 'symbol', 'price', 'volume']]
df_result.set_index('_time', inplace=True)
print("\n--- Kyselyn tulos Pandas DataFramena ---")
print(df_result)
else:
print("\nKysely ei palauttanut dataa.")
client.close()
`pivot()`-funktio Fluxissa on tässä ratkaiseva. Se muuntaa datan InfluxDB:n pitkästä muodosta (yksi rivi per kenttä) leveään muotoon (sarakkeet kullekin kentälle), mikä on tyypillistä DataFramelle. Kun data on nyt Pandasissa, voit käyttää kirjastoja kuten Matplotlib, Seaborn tai scikit-learn visualisointiin ja koneoppimiseen.
Käytännön esimerkki: Järjestelmämetriikoiden seuranta
Yhdistetään kaikki opittu käytännön esimerkkiin: Python-skripti, joka seuraa paikallisia järjestelmämetriikoita (CPU ja muisti) ja kirjaa ne InfluxDB:hen.
Ensin tarvitset `psutil`-kirjaston:
pip install psutil
Seurantaskripti
Tämä skripti toimii jatkuvasti, keräten ja kirjoittaen dataa 10 sekunnin välein.
import influxdb_client
from influxdb_client import Point
from influxdb_client.client.write_api import SYNCHRONOUS
import psutil
import time
import socket
# --- Konfiguraatio ---
url = "http://localhost:8086"
token = "YOUR_SUPER_SECRET_TOKEN" # Korvaa tokenillasi
org = "my-org"
bucket = "monitoring"
# Hae isäntänimi käytettäväksi tunnisteena
hostname = socket.gethostname()
# --- Päävalvontasilmukka ---
def monitor_system():
print("Käynnistetään järjestelmän valvonta...")
with influxdb_client.InfluxDBClient(url=url, token=token, org=org) as client:
write_api = client.write_api(write_options=SYNCHRONOUS)
while True:
try:
# Hae metriikat
cpu_percent = psutil.cpu_percent(interval=1)
memory_percent = psutil.virtual_memory().percent
# Luo datapisteet
cpu_point = (
Point("system_stats")
.tag("host", hostname)
.field("cpu_usage_percent", float(cpu_percent))
)
memory_point = (
Point("system_stats")
.tag("host", hostname)
.field("memory_usage_percent", float(memory_percent))
)
# Kirjoita erä
write_api.write(bucket=bucket, org=org, record=[cpu_point, memory_point])
print(f"Kirjattu CPU: {cpu_percent}%, Muisti: {memory_percent}%")
# Odota seuraavaan intervalliin
time.sleep(10)
except KeyboardInterrupt:
print("\nValvonta pysäytetty käyttäjän toimesta.")
break
except Exception as e:
print(f"Tapahtui virhe: {e}")
time.sleep(10) # Odota ennen uudelleenyritystä
if __name__ == "__main__":
# Huom: Saatat joutua luomaan 'monitoring'-säilön ensin InfluxDB:n käyttöliittymässä.
monitor_system()
Datan visualisointi
Kun olet ajanut tätä skriptiä muutaman minuutin, palaa InfluxDB:n käyttöliittymään osoitteessa `http://localhost:8086`. Siirry Data Explorer (tai Explore) -välilehdelle. Käytä käyttöliittymän rakennustyökalua valitaksesi `monitoring`-säilösi, `system_stats`-mittauksen ja kentät, jotka haluat visualisoida. Näet reaaliaikaisen kaavion järjestelmäsi suorittimen ja muistin käytöstä, jonka Python-skriptisi tuottaa!
Parhaat käytännöt ja edistyneet aiheet
Vankkojen ja skaalautuvien järjestelmien rakentamiseksi noudata näitä parhaita käytäntöjä.
Skeeman suunnittelu: Tunnisteet vs. kentät
- Käytä tunnisteita metadatalle, jonka perusteella teet kyselyitä. Tunnisteet on indeksoitu, mikä tekee `filter()`-operaatioista niillä erittäin nopeita. Hyviä ehdokkaita tunnisteiksi ovat isäntänimet, alueet, anturitunnukset tai mikä tahansa matalan tai keskisuuren kardinaliteetin data, joka kuvaa mittauksiasi.
- Käytä kenttiä raakadata-arvoille. Kenttiä ei ole indeksoitu, joten suodattaminen kentän arvon perusteella on paljon hitaampaa. Mikä tahansa arvo, joka muuttuu lähes jokaisen datapisteen myötä (kuten lämpötila tai hinta), tulisi olla kenttä.
- Kardinaliteetti on avainasemassa. Korkea kardinaliteetti tunnisteissa (monia ainutlaatuisia arvoja, kuten käyttäjätunnus suuressa järjestelmässä) voi johtaa suorituskykyongelmiin. Ole tietoinen tästä suunnitellessasi skeemaasi.
Virheidenkäsittely ja vikasietoisuus
Verkkoyhteydet voivat epäonnistua. Kääri aina kirjoitus- ja kyselykutsusi `try...except`-lohkoihin käsitelläksesi mahdolliset poikkeukset sulavasti. `influxdb-client` sisältää myös sisäänrakennettuja uudelleenyritysstrategioita, joita voit konfiguroida parantamaan vikasietoisuutta.
Turvallisuus: Tokenien hallinta
- Älä koskaan kovakoodaa tokeneita lähdekoodiisi. Käytä ympäristömuuttujia tai salaisuuksien hallintapalvelua, kuten HashiCorp Vaultia tai AWS Secrets Manageria.
- Käytä hienojakoisia tokeneita. InfluxDB:n käyttöliittymässä, API Tokens -osiossa, voit luoda uusia tokeneita tietyillä oikeuksilla. Vain dataa kirjoittavalle sovellukselle luo token, jolla on vain kirjoitusoikeus tiettyyn säilöön. Tämä noudattaa vähimpien oikeuksien periaatetta.
Datan säilytyskäytännöt
Aikasarjadata voi kasvaa uskomattoman nopeasti. InfluxDB:n säilytyskäytännöt poistavat automaattisesti dataa, joka on vanhempaa kuin määritelty kesto. Suunnittele datasi elinkaari: voit säilyttää korkearesoluutioista dataa 30 päivää, mutta tallentaa harvennettua, aggregoitua dataa (esim. päivittäisiä keskiarvoja) loputtomasti toiseen säilöön.
Johtopäätös
Pythonin ja InfluxDB:n yhdistelmä tarjoaa mahtavan alustan minkä tahansa aikasarjadatahaasteen ratkaisemiseen. Olemme matkanneet InfluxDB:n datamallin peruskäsitteistä datan kirjoittamisen ja kyselyn käytännön toteutuksiin virallisella Python-asiakasohjelmalla. Olet oppinut kirjoittamaan yksittäisiä pisteitä, eräajamaan dataa suorituskyvyn parantamiseksi ja integroimaan saumattomasti tehokkaaseen Pandas-kirjastoon.
Noudattamalla parhaita käytäntöjä skeeman suunnittelussa, turvallisuudessa ja virheidenkäsittelyssä olet nyt hyvin varusteltu rakentamaan skaalautuvia, vikasietoisia ja oivaltavia sovelluksia. Aikasarjadatan maailma on laaja, ja sinulla on nyt perustyökalut sen tutkimiseen.
Seuraavat askeleet matkallasi voisivat sisältää InfluxDB:n tehtävämoottorin tutkimista automaattiseen datan harventamiseen, hälytysten asettamista poikkeamien havaitsemiseksi tai integrointia visualisointityökaluihin, kuten Grafanaan. Mahdollisuudet ovat rajattomat. Aloita aikasarjasovellustesi rakentaminen tänään!